SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TMDOCU_PROV_Q01]
/*-------------------------------------------------------*/
/*---Empresa              : OFISIS S.A.                --*/
/*---Cliente              : OFISIS                     --*/
/*---Sistema              : Tesoreria                  --*/
/*---M÷dulo               : Empresa                    --*/
/*---Programa             : Obligaciones Pendientes    --*/
/*---Script               : tmdocu_p.sql               --*/
/*---Nombre SP            : SP_TMDOCU_PROV_Q01         --*/
/*---Desarrollado por     : Javier Flores A.           --*/
/*---Fecha Creaci÷n       : 13/08/1999                 --*/
/*---Base Datos           : Microsoft Sql Server       --*/
/*---Versi÷n              : 7.0                        --*/
/*---Invoca a SP          :                            --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 1 por     :EDUARDO VIVAR POMIANO       --*/
/*---Fecha Modificaci÷n   :15/05/2001                  --*/ 
/*---Detalle Modificaci÷n :Canje/Renovacion 	       --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Drop Proc SP_TMDOCU_PROV_Q01                      --*/
/*---Grant all on SP_TMDOCU_PROV_Q01 to public         --*/ 
/*---SP_TMDOCU_PROV_Q01 '01',  NULL,  "'OCM',  'BOL'" ,NULL,'1999/01/01','2002/02/01', '2002/02/01', '1','2', 'S' , NULL  --*/
/*-------------------------------------------------------*/
 @ISCO_EMPR      TD_VC_002,  
 @ISCO_PROV      TD_VC_020,
 @ISDE_CODI      VARCHAR(500),
 @ISCO_MONE      TD_VC_003, 
 @IDFE_VENC_0001 TD_DT_001,
 @IDFE_VENC_0002 TD_DT_001,
 @IDFE_CANC	 TD_DT_001,
 @ISSE_0001      TD_VC_001, 
 @ISSE_ORDE      TD_VC_001,
 @ISFE_SIST      TD_VC_001,
 @ISCO_TIPO_OPER TD_VC_003
	As
CREATE TABLE #TWREPO_PROV 
 ( CO_EMPR      VARCHAR (02) NULL,
   FE_EMIS      DATETIME NULL, 
   FE_VENC      DATETIME NULL,
   CO_TIPO_DOCU VARCHAR (03) NULL, 
   NU_DOCU_PROV VARCHAR (15) NULL,
   CO_TIPO_OPER VARCHAR (03) NULL, 
   CO_PROV      VARCHAR (11) NULL, 
   NO_CORT_PROV VARCHAR (050) NULL,
   DE_OBSE      VARCHAR (100) NULL,    
   CO_MONE      VARCHAR (003) NULL, 
   NU_ANTI      INT NULL,
   IM_DETA      NUMERIC(16,4) NULL )
  
DECLARE  @CSCO_EMPR       TD_VC_002,  
         @CDFE_EMIS       TD_DT_001, 
         @CDFE_VENC       TD_DT_001, 
         @CSCO_TIPO_DOCU  TD_VC_003, 
         @CNIM_TOTA       TD_NU_016_004,
         @CNIM_PAGA       TD_NU_016_004,
         @CSNU_DOCU_PROV  TD_VC_020, 
         @CSCO_PROV       TD_VC_020, 
         @CSDE_OBSE       TD_VC_100, 
         @CSCO_MONE       TD_VC_003,
         @VNNU_ANTI       TD_IN_001,
         @VSNO_CORT_PROV  TD_VC_050, 
         @CSNU_LETR_PROV  TD_VC_020, 
         @VNIM_DETA       TD_NU_016_004,
         @VNIM_DETA_AUXI  TD_NU_016_004,
         @VNIM_PAGA       TD_NU_016_004,
 	 @VNFE_0001       TD_IN_001, 
         @VNFE_0002       TD_IN_001,
         @VSFE_CANC	  TD_IN_001,
	 @VSCA_EMPR       TD_VC_100,
	 @VSCA_ARRE	  TD_VC_100,
         @VSCA_PROV       TD_VC_100,
         @VSCA_TIDO       VARCHAR(300),
         @VSCA_MONE       TD_VC_100,
	 @VSCA_TIPO_OPER  TD_VC_100,
	 @VSFE_SELE       TD_VC_100,
         @VSST_CIER_CARG  TD_VC_001,
         @VNIM_PAGA_CARG  TD_NU_016_004,
         @VSST_CIER_CHEQ  TD_VC_001,
         @VNIM_PAGA_CHEQ  TD_NU_016_004,
         @VSST_CIER_CAJA  TD_VC_001,
         @VNIM_PAGA_CAJA  TD_NU_016_004,
         @VSFE_VENC_0001  TD_VC_010,  
         @VSFE_VENC_0002  TD_VC_010,
         @VSST_CIER_ACAR  TD_VC_001,
         @VSST_CIER_ACHE  TD_VC_001,
         @VSST_CIER_ACAJ  TD_VC_001,
         @VSSE_ORDE       VARCHAR(200),
         @OSTI_DOCU 	  TD_VC_003, 
	 @OSTI_DOCU_0001  TD_VC_003, 
	 @OSTI_DOCU_0002  TD_VC_003, 
  	 @VNFA_ABON       TD_NU_016_004,
         @VSST_SIGN       TD_VC_001,
	 @VNNU_REGI   TD_IN_001,
         @VNIM_PAGO_OCMP  TD_NU_016_004,
         @VNIM_DEVO_OCMP  TD_NU_016_004,
         @VNIM_PAGA_NCRE  TD_NU_016_004,
         @VNIM_PAGA_NCFA  TD_NU_016_004,
	 @VNIM_PAGA_APOC  TD_NU_016_004,
	 @VNIM_PAGA_RENO  TD_NU_016_004,
	 @VNIM_PAGA_CANJ  TD_NU_016_004,
	 @VNIM_PAGA_TOTA  TD_NU_016_004,
	 @VSST_CIER_NCPR  TD_VC_001,
	 @CSCO_MONE_DEFA  TD_VC_003,
	 @CSCO_MONE_EXTR  TD_VC_003,
	 @CSCO_TIPO_OPER  TD_VC_003
	 

    Select @VSCA_EMPR = '', 
	   @VSCA_PROV = '',
  	   @VSCA_TIDO = '',
	   @VSCA_MONE = '',
	   @VSCA_TIPO_OPER = ''

    If @ISCO_EMPR is Not Null
       Select @VSCA_EMPR = ' T1.CO_EMPR =  "'+@ISCO_EMPR+'" And  '
    If @ISCO_PROV is Not Null
       Select @VSCA_PROV = ' T1.CO_PROV =  "' + @ISCO_PROV+ '" And '
    If @ISDE_CODI is Not Null
       Select @VSCA_TIDO = ' T1.CO_TIPO_DOCU IN (' + @ISDE_CODI+ ') And '
    If @ISCO_MONE is Not Null 
       Select @VSCA_MONE = ' T1.CO_MONE = "' + @ISCO_MONE+ '"  And  '  
    If @ISCO_TIPO_OPER is Not Null 
       Select @VSCA_TIPO_OPER = ' T1.CO_TIPO_OPER = "' + @ISCO_TIPO_OPER + '"  And  '    

    If @ISSE_ORDE = '1'
       Select @VSSE_ORDE = ' Where T1.CO_EMPR = T2.CO_EMPR AND T1.CO_EMPR = T3.CO_EMPR Order by T1.CO_EMPR, T1.FE_VENC, T1.CO_TIPO_DOCU, T1.NU_DOCU_PROV '
    If @ISSE_ORDE = '2'
       Select @VSSE_ORDE = ' Where T1.CO_EMPR = T2.CO_EMPR AND T1.CO_EMPR = T3.CO_EMPR Order By T1.CO_EMPR,T1.CO_PROV,T1.FE_VENC,T1.CO_TIPO_DOCU,T1.NU_DOCU_PROV'       
    If @ISSE_ORDE = '3'
       Select @VSSE_ORDE = ' Where T1.CO_EMPR = T2.CO_EMPR AND T1.CO_EMPR = T3.CO_EMPR Order By T1.CO_EMPR,T1.NO_CORT_PROV,T1.FE_VENC,T1.CO_TIPO_DOCU,T1.NU_DOCU_PROV'       



    Select @VSFE_VENC_0001 = convert (varchar(10), @IDFE_VENC_0001,103)
    Select @VSFE_VENC_0002 = convert (varchar(10), @IDFE_VENC_0002,103)
    Select @VSFE_CANC = convert (varchar(10), @VSFE_CANC,103)	


	-- BUSCO CODIGO DE O/C Y O/S
	Exec SP_TTDOCU_CNTB_Q02 15, @OSTI_DOCU_0001 OUTPUT
	Exec SP_TTDOCU_CNTB_Q02 8, @OSTI_DOCU_0002 OUTPUT


    /*-----------------------   CURSOR   PARA LOS DOCUMENTOS ---------------------------------*/      
    /*----------------- TABLA : TMDOCU_PROV ----------------------*/      


    EXECUTE ('Declare CU_TMDOCU_PROV_Q01_1 Cursor For	
    Select 	T1.CO_EMPR, T1.FE_EMIS , T1.FE_VENC , T1.CO_TIPO_DOCU, 
		T1.NU_DOCU_PROV , T1.CO_PROV, T1.DE_OBSE, T1.IM_TOTA, 
		T1.IM_PAGA, T1.CO_MONE, T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, 
		T1.CO_TIPO_OPER 
    From  	TMDOCU_PROV T1, TMPARA_TESO T2
    Where 	'+ @VSCA_EMPR+@VSCA_PROV+@VSCA_TIDO+@VSCA_MONE+@VSCA_TIPO_OPER+' 
		T1.FE_VENC >= Convert(Datetime, "' + @VSFE_VENC_0001 + '" ,103) 
	    	And T1.FE_VENC <= Convert(Datetime, "'+ @VSFE_VENC_0002 + '" ,103) 
    		And T1.CO_ESTA_DOCU != "ANU"  
    		And IsNull(T1.NU_REND_GAST,"") =  "" 
    		And T1.CO_EMPR = T2.CO_EMPR') 


    Open CU_TMDOCU_PROV_Q01_1
    Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, 
    @CSNU_DOCU_PROV,  @CSCO_PROV, @CSDE_OBSE, @CNIM_TOTA, @CNIM_PAGA, @CSCO_MONE,
    @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER


    Select @VNFE_0001  = @@FETCH_STATUS
    While (@VNFE_0001 = 0)
	Begin
	  If (@VNFE_0001 < 0)
     	     Begin
               ---RAISERROR 20001 "FIN DE ARCHIVO"
 	       Close CU_TMDOCU_PROV_Q01_1
	       Deallocate CU_TMDOCU_PROV_Q01_1
	       Return
             End		

	     Select @VSST_SIGN = ST_SIGN 
             FROM TTDOCU_CNTB
	     Where  TI_DOCU = @CSCO_TIPO_DOCU

             IF @VSST_SIGN  = 'S'
	        SELECT @VNFA_ABON = 1
	     ELSE 
	        SELECT @VNFA_ABON = -1

	     SELECT @VSNO_CORT_PROV = T1.NO_AUXI
             FROM   TMAUXI_EMPR T1, TMPARA_TESO T2
             WHERE  T1.CO_EMPR = @CSCO_EMPR 
             And    T1.CO_AUXI_EMPR = @CSCO_PROV 
	     And    T1.CO_EMPR = T2.CO_EMPR 
	     And    T1.TI_AUXI_EMPR = T2.CO_TIAU_PROV

	     Select @VNIM_PAGA_CARG = 0, @VSST_CIER_CARG = NULL, @VNIM_PAGO_OCMP  = 0,
             	    @VNIM_PAGA_NCRE = 0, @VNIM_PAGA_NCFA = 0,    @VNIM_PAGA_APOC = 0,
		    @VNIM_PAGA_CANJ = 0, @VNIM_PAGA_RENO = 0  


			    -- BUSCO CODIGO DE O/C Y O/S
                            If @CSCO_TIPO_DOCU = @OSTI_DOCU_0001 OR @CSCO_TIPO_DOCU = @OSTI_DOCU_0002
   	                       Begin 
	                         Select @VNIM_PAGO_OCMP = 0	       
				
                                 Select @VNIM_PAGO_OCMP = ISNULL(SUM( ISNULL(T2.IM_PAGO_ORIG, 0)),0)
	                         From   TCAMAR_OCPR t1,  TDAMAR_OCPR t2
	                         Where  T1.CO_EMPR = @CSCO_EMPR
	                         And    T1.FE_AMAR <= @IDFE_VENC_0002
                                 And    T1.TI_SITU = 'ACT'
	                         And    T1.CO_EMPR = T2.CO_EMPR
	                         And    T1.NU_AMAR = T2.NU_AMAR
                 	         And	T2.CO_ENTI = @CSCO_PROV
				 And    T2.CO_TIDO_ORIG = @CSCO_TIPO_DOCU
	                         And    T2.NU_DOCU_ORIG = @CSNU_DOCU_PROV


                                 Select @VNIM_DEVO_OCMP = ISNULL(SUM( ISNULL(T2.IM_DEVO, 0)),0)
	                         From   TCMOVI_BANC t1,  TDDEVO_ANTC t2
	                         Where  T1.CO_EMPR = @CSCO_EMPR
	                         And    T1.FE_OPER <= @IDFE_VENC_0002
                             And    T1.TI_SITU = 'ACT'
	                         And    T1.CO_EMPR = T2.CO_EMPR
	                         And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
				             And    T1.CO_BANC = T2.CO_BANC  
				             And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
				             And    T1.AA_BNCO = T2.AA_BNCO
				             And    T1.MM_BNCO = T2.MM_BNCO 
				             And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
				             And    T1.NU_COMP_BANC = T2.NU_COMP_BANC
                 	         And	T1.CO_ENTI = @CSCO_PROV
				             And    T2.CO_TIPO_DOCU = @CSCO_TIPO_DOCU
	                         And    T2.NU_DOCU_PROV = @CSNU_DOCU_PROV

				 Select @VNIM_PAGA_TOTA = Isnull(@VNIM_PAGO_OCMP,0) + Isnull(@VNIM_DEVO_OCMP,0) 
				 Select @VNIM_DETA = @CNIM_PAGA - @VNIM_PAGA_TOTA


				 If @CNIM_PAGA >  @VNIM_PAGA_TOTA
			                  Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                                          NO_CORT_PROV, DE_OBSE, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                                          Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, 
                                          @CSCO_PROV, @VSNO_CORT_PROV, @CSDE_OBSE, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)  			    
				 
			
	 		       END


	     /* SI TIENE PAGOS EN BANCOS  (DOCUMENTOS DIFERENTES A CHEQUES) */

           Select @VSST_CIER_CARG = Max(T1.ST_CIER_DOCU),
                  @VNIM_PAGA_CARG = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
           From TDMOVI_BANC T1, TCMOVI_BANC T2
           Where  T1.CO_EMPR = @CSCO_EMPR  
           --And    T1.TI_MOVI_BANC = 'E' 
       	   And    T1.CO_ENTI = @CSCO_PROV 
           And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
           And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV
	       And    T2.FE_OPER  <= @IDFE_CANC
           And    T2.NU_CHEQ is Null
           And    T2.TI_SITU = 'ACT' 
           And    T1.CO_EMPR = T2.CO_EMPR  
           And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
           And    T1.CO_BANC = T2.CO_BANC  
           And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
           And    T1.AA_BNCO = T2.AA_BNCO
           And    T1.MM_BNCO = T2.MM_BNCO 
           And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
           And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
           Group By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI

           If @VSST_CIER_CARG is null
              Select @VSST_CIER_CARG = 'N'

           If ( @CNIM_TOTA >  @VNIM_PAGA_CARG ) And @VSST_CIER_CARG = 'N'/* 1 */
              Begin
               /* SI TIENE PAGOS CON FECHA DE CHEQUE O FECHA DE ENTREGA */

               Select @VNIM_PAGA_CHEQ = 0, @VSST_CIER_CHEQ = NULL

               If @ISSE_0001 = '1' 
                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
                         @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
                  And    T1.TI_MOVI_BANC = 'E'
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
                  And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV 
                  And    T2.NU_CHEQ is Not Null 
                  And    T2.FE_CHEQ <= @IDFE_CANC
                  And    T2.TI_SITU = 'ACT' 
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

               If @ISSE_0001 = '2' 

                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
                         @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
                  And    T1.TI_MOVI_BANC = 'E'
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
                  And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV 
                  And    T2.NU_CHEQ is Not Null 
                  And    T2.FE_ENTR_CHEQ <= @IDFE_CANC
                  And    T2.TI_SITU = 'ACT' 
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

                  If @VSST_CIER_CHEQ is null
                     Select @VSST_CIER_CHEQ = 'N'

                  If (@CNIM_TOTA >  @VNIM_PAGA_CHEQ ) and @VSST_CIER_CARG = 'N'/* 2 */
                    Begin

                      /* SI TIENE PAGOS CON CAJA */
            
                      Select @VNIM_PAGA_CAJA = 0, @VSST_CIER_CAJA = NULL

                      Select @VSST_CIER_CAJA = Max(T1.ST_CIER_DOCU),
                             @VNIM_PAGA_CAJA = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                      From   TDMOVI_CAJA T1, TCMOVI_CAJA T2
    		      Where  T1.CO_EMPR = @CSCO_EMPR  
                      --And    T1.TI_MOVI = 'E' 
                      And    T1.CO_ENTI = @CSCO_PROV 
                      And    T1.TI_DOCU_ENTI = @CSCO_TIPO_DOCU
                      And    T1.NU_DOCU_ENTI = @CSNU_DOCU_PROV
           	      And    T2.FE_OPER  <= @IDFE_CANC
   		      And    T2.TI_SITU = 'ACT' 
 		      And    T1.CO_EMPR = T2.CO_EMPR  
                      And    T1.CO_CAJA = T2.CO_CAJA
                      And    T1.AA_CAJA = T2.AA_CAJA

                      And    T1.MM_CAJA = T2.MM_CAJA 
                      And    T1.TI_MOVI = T2.TI_MOVI
                      And    T1.NU_COMP_CAJA = T2.NU_COMP_CAJA
                      Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

                      If @VSST_CIER_CAJA is null
                         Select @VSST_CIER_CAJA = 'N'

                      If (@CNIM_TOTA >  @VNIM_PAGA_CAJA ) and @VSST_CIER_CAJA = 'N'/* 3 */
                          Begin
				IF @ISFE_SIST  = 'S'
                                    Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
		         Else
			           Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)

                                 Select @VNIM_DETA = 0


				 -- Busco importes Canjeados
			  	Select @VNIM_PAGA_CANJ = ISNULL(SUM( ISNULL(T2.IM_CANJ_MDOC, 0)),0)
			  	From   TCCANJ_PROV T1, TDCANJ_PROV T2
                  	  	Where  T1.CO_EMPR =  @CSCO_EMPR
                  	  	AND    T1.FE_CANJ <= @IDFE_CANC
                  	  	AND    T1.TI_SITU != 'ANU'
                  	  	AND    T2.CO_PROV = @CSCO_PROV
				AND    T2.CO_TIPO_DOCU = @CSCO_TIPO_DOCU
                  	  	AND    T2.NU_DOCU_PROV = @CSNU_DOCU_PROV
			  	AND    T1.CO_EMPR = T2.CO_EMPR  
                          	AND    T1.NU_CANJ = T2.NU_CANJ
			  	AND   T1.CO_PROV = T2.CO_PROV

				-- NOTA DE CREDITO
				Exec SP_TTDOCU_CNTB_Q02 4, @OSTI_DOCU OUTPUT
                                IF @CSCO_TIPO_DOCU = @OSTI_DOCU/* 4 */
                                   Begin
                                     Select @VSST_CIER_NCPR = Max(ST_CIER_DOCU), 
                                            @VNIM_PAGA_NCRE = 	SUM(( PATINDEX( T1.CO_MONE, T3.CO_MONE ) +
   								PATINDEX( CONVERT( CHAR(1),PATINDEX( T1.CO_MONE, T3.CO_MONE ) ), '0')*
								( PATINDEX( @CSCO_MONE_EXTR, t1.CO_MONE )*T1.FA_TIPO_CAMB +
	  							PATINDEX( @CSCO_MONE_DEFA, t1.CO_MONE )/T1.FA_TIPO_CAMB  ) )*ISNULL(T2.IM_PAGO_ORIG,0))
                           	     From   TCAMAR_NCPR T1 , TDAMAR_NCPR T2, TMDOCU_PROV T3
                                     Where  T1.CO_EMPR =   @CSCO_EMPR
            			     AND    T1.FE_AMAR <= @IDFE_CANC
                   		     AND    T1.TI_SITU = 'ACT'
                                     AND    T2.CO_TIDO_ORIG = @CSCO_TIPO_DOCU 
                                     AND    T2.NU_DOCU_ORIG = @CSNU_DOCU_PROV 
				     AND    T3.CO_PROV = @CSCO_PROV
                                     AND    T1.CO_EMPR = T2.CO_EMPR  
                                     AND    T1.NU_AMAR = T2.NU_AMAR
                                     AND    T2.CO_EMPR = T3.CO_EMPR
                                     AND    T1.CO_PROV = T3.CO_PROV
                                     AND    T2.CO_TIDO_ORIG = T3.CO_TIPO_DOCU
                                     AND    T2.NU_DOCU_ORIG = T3.NU_DOCU_PROV
                                     Group By T1.CO_PROV, T2.CO_TIDO_ORIG, T2.NU_DOCU_ORIG                                     

                                     IF @ISFE_SIST  = 'S'
                                       Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
		                     Else
			               Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)  

                                     Select @VNIM_DETA = 0, @VNIM_DETA_AUXI = 0

				     -- Importe pagado a la Nota de Credito
                                     Select @VNIM_PAGA_TOTA = Isnull(@VNIM_PAGA_CAJA,0) + Isnull(@VNIM_PAGA_CARG,0) + 
                                                          Isnull(@VNIM_PAGA_CHEQ,0) + Isnull(@VNIM_PAGA_NCRE,0) + 
                                                          Isnull(@VNIM_PAGA_APOC,0) + Isnull(@VNIM_PAGA_CANJ, 0)

				     If @VSST_CIER_NCPR is null
		                        Select @VSST_CIER_NCPR = 'N'

                                     If (@CNIM_TOTA >  @VNIM_PAGA_NCRE ) and @VSST_CIER_NCPR = 'N'/* 5 */
                                        --Begin 
					
 					  -- Busco Importes renovados
			  		Select @VNIM_PAGA_RENO = ISNULL(SUM( ISNULL(T2.IM_RENO_MDOC, 0)),0)
			  		From   TCRENO_PROV T1, TDRENO_PROV T2
                  	  		Where  T1.CO_EMPR =  @CSCO_EMPR
                  	  		AND    T1.FE_RENO <= @IDFE_CANC
                  	  		AND    T1.TI_SITU != 'ANU'
                  	  		AND    T2.CO_PROV = @CSCO_PROV
					AND    T2.CO_TIPO_DOCU = @CSCO_TIPO_DOCU
                  	  		AND    T2.NU_DOCU_PROV = @CSNU_DOCU_PROV
			  		AND    T1.CO_EMPR = T2.CO_EMPR  
          		AND    T1.NU_RENO = T2.NU_RENO
			  		AND    T1.CO_PROV = T2.CO_PROV
				
					 Select @VNIM_PAGA_TOTA = @VNIM_PAGA_TOTA + ISNULL(@VNIM_PAGA_CANJ,0) + ISNULL(@VNIM_PAGA_RENO,0)

					 Select @VNIM_DETA = (@CNIM_TOTA - @VNIM_PAGA_TOTA)*@VNFA_ABON

					  If @CNIM_TOTA >  @VNIM_PAGA_TOTA

                                          Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                                          NO_CORT_PROV, DE_OBSE, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                                          Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, 
                                          @CSCO_PROV, @VSNO_CORT_PROV, @CSDE_OBSE, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)
                                       --End/* 5 */
                                   End/* 4 */ 
                                Else/* 4 */
                                  Begin/* 4 */

                                    Select @VNIM_PAGA_NCFA = 
					SUM(( PATINDEX( t1.CO_MONE, T3.CO_MONE ) +
					PATINDEX( CONVERT(CHAR(1), PATINDEX( t1.CO_MONE, T3.CO_MONE ) ), '0')*
					(  PATINDEX( @CSCO_MONE_EXTR, t1.CO_MONE )*T1.FA_TIPO_CAMB +
	  		   		PATINDEX( @CSCO_MONE_DEFA, t1.CO_MONE )/T1.FA_TIPO_CAMB  ) )*
					ISNULL(T2.IM_PAGO_DEST,0))
                                    From   TCAMAR_NCPR T1 , TDAMAR_NCPR T2, TMDOCU_PROV T3
                                    Where  T1.CO_EMPR =   @CSCO_EMPR
    				    AND    T1.FE_AMAR <= @IDFE_CANC
                              	    AND    T1.TI_SITU = 'ACT'
				    AND    T2.CO_ENTI = @CSCO_PROV
                                    AND    T2.CO_TIDO_DEST = @CSCO_TIPO_DOCU 
                                    AND    T2.NU_DOCU_DEST = @CSNU_DOCU_PROV 
                   	    	    AND    T1.CO_EMPR = T2.CO_EMPR  
                          	    AND    T1.NU_AMAR = T2.NU_AMAR
                                    AND    T2.CO_EMPR = T3.CO_EMPR
                                    AND    T1.CO_PROV = T3.CO_PROV
                                    AND    T2.CO_TIDO_DEST = T3.CO_TIPO_DOCU
                                    AND    T2.NU_DOCU_DEST = T3.NU_DOCU_PROV
                                    Group By T1.CO_PROV, T2.CO_TIDO_DEST, T2.NU_DOCU_DEST

                                    Select @VNIM_PAGA_APOC = 
					ISNULL(SUM(ISNULL(T2.IM_PAGO_DEST,0)),0)
                                    From   TCAMAR_OCPR T1 , TDAMAR_OCPR T2, TMDOCU_PROV T3
                                    Where  T1.CO_EMPR =   @CSCO_EMPR
                                    AND    T1.FE_AMAR <= @IDFE_CANC
                                    AND    T1.TI_SITU = 'ACT'
                                    AND	   T2.CO_ENTI = @CSCO_PROV
				    AND    T2.CO_TIDO_DEST = @CSCO_TIPO_DOCU 
                                    AND    T2.NU_DOCU_DEST = @CSNU_DOCU_PROV 
                                    AND    T1.CO_EMPR = T2.CO_EMPR  
                  		    AND  T1.NU_AMAR = T2.NU_AMAR
                                    AND    T2.CO_EMPR = T3.CO_EMPR
                                    AND    T1.CO_PROV = T3.CO_PROV
                                    AND    T2.CO_TIDO_DEST = T3.CO_TIPO_DOCU
		                     AND    T2.NU_DOCU_DEST = T3.NU_DOCU_PROV
                                    Group By T1.CO_PROV, T2.CO_TIDO_DEST, T2.NU_DOCU_DEST

                                    IF @ISFE_SIST  = 'S'
                                       Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
	                            Else
			              Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)  

                                    Select @VNIM_DETA = 0, @VNIM_DETA_AUXI = 0				    

                                    Select @VNIM_DETA = (@CNIM_TOTA - ( Isnull(@VNIM_PAGA_CAJA,0) + Isnull(@VNIM_PAGA_CARG,0) + 
                                                         Isnull(@VNIM_PAGA_CHEQ,0) + Isnull(@VNIM_PAGO_OCMP,0) + Isnull(@VNIM_PAGA_NCRE,0) + 
                                                         Isnull(@VNIM_PAGA_NCFA,0) + Isnull(@VNIM_PAGA_APOC,0) +
							 ISNULL(@VNIM_PAGA_CANJ,0))) * @VNFA_ABON 

                                    Select @VNIM_PAGA_TOTA = 	Isnull(@VNIM_PAGA_CAJA,0) + Isnull(@VNIM_PAGA_CARG,0) + 
                                                              	Isnull(@VNIM_PAGA_CHEQ,0) + Isnull(@VNIM_PAGO_OCMP,0) + 
								Isnull(@VNIM_PAGA_NCRE,0) + Isnull(@VNIM_PAGA_NCFA,0) + 
								Isnull(@VNIM_PAGA_APOC,0) + ISNULL(@VNIM_PAGA_CANJ,0)

                                    If @CNIM_TOTA > @VNIM_PAGA_TOTA  
                                       Begin 
        				Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                                         NO_CORT_PROV, DE_OBSE, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                                         Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, 
                                         @CSCO_PROV, @VSNO_CORT_PROV, @CSDE_OBSE, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)
                                       End
                                  End/* 4 */
			    

                    /* 3 */End /* Fin Caja */
       /* 2 */End /* Fin Bancos con cheque */
    /* 1 */End /* Fin Bancos sin cheque */

      Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @CSCO_TIPO_DOCU, 
      @CSNU_DOCU_PROV,  @CSCO_PROV, @CSDE_OBSE, @CNIM_TOTA, @CNIM_PAGA, @CSCO_MONE,
      @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER

      Select @VNFE_0001 = @@FETCH_STATUS

  End

  Close CU_TMDOCU_PROV_Q01_1
  Deallocate CU_TMDOCU_PROV_Q01_1

/*-------------------------------   CURSOR   PARA  LETRAS  ---------------------------------*/      
/*-------------------------------   TABLA : TMLETR_PROV ---------------------------------*/      

-- OBTENGO EL CODIGO DE LETRAS
  Exec SP_TTDOCU_CNTB_Q02 6, @OSTI_DOCU OUTPUT 

  If PATINDEX('%'+@OSTI_DOCU+'%', @ISDE_CODI) > 0
     Begin
       Execute ( ' DECLARE CU_TMDOCU_PROV_Q01_1 CURSOR 
       FOR	
       Select T1.CO_EMPR, T1.FE_EMIS, T1.FE_VENC, T1.NU_LETR_PROV, T1.CO_PROV, 
              T1.IM_TOTA, T1.CO_MONE, T2.CO_MONE_DEFA, T2.CO_MONE_EXTR, T1.CO_TIPO_OPER
       From   TMLETR_PROV T1, TMPARA_TESO T2
       Where '+ @VSCA_EMPR+@VSCA_PROV+@VSCA_MONE+@VSCA_TIPO_OPER+ 
       ' T1.FE_VENC >= Convert(Datetime, "' + @VSFE_VENC_0001 + '" ,103)
       And T1.FE_VENC <= Convert(Datetime, "'+ @VSFE_VENC_0002 + '" ,103)
       And T1.CO_ESTA_DOCU != "ANU" 
       And T1.CO_EMPR = T2.CO_EMPR ') 

       Open CU_TMDOCU_PROV_Q01_1
       Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, 
       @CSNU_LETR_PROV,  @CSCO_PROV, @CNIM_TOTA, @CSCO_MONE, 
       @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER 

       Select @VNFE_0001  = @@FETCH_STATUS
       While (@VNFE_0001 = 0)
         Begin
           If (@VNFE_0001 < 0)
     	        Begin
                ---RAISERROR 20001 "FIN DE ARCHIVO"
 	          Close CU_TMDOCU_PROV_Q01_1
	          Deallocate CU_TMDOCU_PROV_Q01_1
	          Return
              End		
       
	   SELECT @VSNO_CORT_PROV = T1.NO_AUXI
           FROM   TMAUXI_EMPR T1, TMPARA_TESO T2
           WHERE  T1.CO_EMPR = @CSCO_EMPR 
           And    T1.CO_AUXI_EMPR = @CSCO_PROV 
	   And    T1.CO_EMPR = T2.CO_EMPR
	   And    T1.TI_AUXI_EMPR = T2.CO_TIAU_PROV
	
	     Select @VNIM_PAGA_CARG = 0, @VSST_CIER_CARG = NULL         

           /* SI TIENE PAGOS EN BANCOS  (DOCUMENTOS DIFERENTES A CHEQUES) */

           Select @VSST_CIER_CARG = Max(T1.ST_CIER_DOCU),
                  @VNIM_PAGA_CARG = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
           From   TDMOVI_BANC T1, TCMOVI_BANC T2
           Where  T1.CO_EMPR = @CSCO_EMPR  
           --And    T1.TI_MOVI_BANC = 'E' 
           And    T1.CO_ENTI = @CSCO_PROV 
           And    T1.TI_DOCU_ENTI = @OSTI_DOCU
           And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV
           And    T2.FE_OPER  <= @IDFE_CANC
           And    T2.NU_CHEQ is Null
           And    T2.TI_SITU = 'ACT' 
           And    T1.CO_EMPR = T2.CO_EMPR  
           And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
           And    T1.CO_BANC = T2.CO_BANC  
           And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
           And    T1.AA_BNCO = T2.AA_BNCO
           And    T1.MM_BNCO = T2.MM_BNCO 
           And  T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
	   And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
           Group By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI

           If @VSST_CIER_CARG is null
              Select @VSST_CIER_CARG = 'N'

           If (@CNIM_TOTA >  @VNIM_PAGA_CARG ) and @VSST_CIER_CARG = 'N'               
              Begin

               /* SI TIENE PAGOS CON FECHA DE CHEQUE O FECHA DE ENTREGA */

               Select @VNIM_PAGA_CHEQ = 0, @VSST_CIER_CHEQ = NULL

               If @ISSE_0001 = '1' 

                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
                         @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
              	  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
		          And    T1.TI_MOVI_BANC = 'E'                  
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = @OSTI_DOCU
                  And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV 
                  And    T2.NU_CHEQ is Not Null 
   		          And    T2.FE_CHEQ <= @IDFE_CANC
                  And    T2.TI_SITU = 'ACT' 
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

   	       If @ISSE_0001 = '2' 

                  Select @VSST_CIER_CHEQ = Max(T1.ST_CIER_DOCU),
                         @VNIM_PAGA_CHEQ = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                  From   TDMOVI_BANC T1, TCMOVI_BANC T2
                  Where  T1.CO_EMPR = @CSCO_EMPR  
                  And    T1.TI_MOVI_BANC = 'E'
                  And    T1.CO_ENTI = @CSCO_PROV 
                  And    T1.TI_DOCU_ENTI = @OSTI_DOCU
                  And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV 
                  And    T2.NU_CHEQ is Not Null 
                  And    T2.FE_ENTR_CHEQ <= @IDFE_CANC
                  And    T2.TI_SITU = 'ACT'
                  And    T1.CO_EMPR = T2.CO_EMPR  
                  And    T1.CO_UNID_CONC = T2.CO_UNID_CONC
                  And    T1.CO_BANC = T2.CO_BANC  
                  And    T1.NU_CNTA_BANC  = T2.NU_CNTA_BANC  
                  And    T1.AA_BNCO = T2.AA_BNCO
                  And    T1.MM_BNCO = T2.MM_BNCO 
                  And    T1.TI_MOVI_BANC  = T2.TI_MOVI_BANC 
                  And    T1.NU_COMP_BANC = T2.NU_COMP_BANC  
                  Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

                  If @VSST_CIER_CHEQ is null
                     Select @VSST_CIER_CHEQ = 'N'

                  If (@CNIM_TOTA >  @VNIM_PAGA_CHEQ ) and @VSST_CIER_CHEQ = 'N'
                    Begin

                      /* SI TIENE PAGOS CON CAJA */
            
                      Select @VNIM_PAGA_CAJA = 0, @VSST_CIER_CAJA = NULL

                      Select @VSST_CIER_CAJA = Max(T1.ST_CIER_DOCU),
                             @VNIM_PAGA_CAJA = Isnull(Sum(Isnull(T1.IM_CONV_DOCU,0)),0)
                      From   TDMOVI_CAJA T1, TCMOVI_CAJA T2
                      Where  T1.CO_EMPR = @CSCO_EMPR  
                      --And    T1.TI_MOVI = 'E' 
                      And    T1.CO_ENTI = @CSCO_PROV 
          And    T1.TI_DOCU_ENTI = @OSTI_DOCU
                      And    T1.NU_DOCU_ENTI = @CSNU_LETR_PROV
                      And    T2.FE_OPER  <= @IDFE_CANC
                      And    T2.TI_SITU = 'ACT' 
                      And    T1.CO_EMPR = T2.CO_EMPR  
                      And    T1.CO_CAJA = T2.CO_CAJA
                      And    T1.AA_CAJA = T2.AA_CAJA
                      And    T1.MM_CAJA = T2.MM_CAJA 
                      And    T1.TI_MOVI = T2.TI_MOVI
                      And    T1.NU_COMP_CAJA = T2.NU_COMP_CAJA
                      Group  By T2.CO_ENTI, T1.TI_DOCU_ENTI, T1.NU_DOCU_ENTI 

		      IF @ISFE_SIST  = 'S'
                        Select @VNNU_ANTI = datediff(day ,@CDFE_VENC , GETDATE())  
		      ELSE 
                        Select @VNNU_ANTI = datediff(day ,@CDFE_VENC ,@IDFE_VENC_0002)  

                                     
                      If @VSST_CIER_CAJA is null
                         Select @VSST_CIER_CAJA = 'N'
                      
                      If (@CNIM_TOTA >  @VNIM_PAGA_CAJA ) and @VSST_CIER_CAJA = 'N'
                          Begin 

			  -- Busco Importes renovados
			  Select @VNIM_PAGA_RENO = isnull(SUM( ISNULL(T2.IM_RENO_MDOC, 0)),0)
			  From   TCRENO_PROV T1, TDRENO_PROV T2
                  	  Where  T1.CO_EMPR =  @CSCO_EMPR
                  	  AND    T1.FE_RENO <= @IDFE_CANC
                  	  AND    T1.TI_SITU != 'ANU'
                  	  AND    T2.CO_PROV = @CSCO_PROV
			  AND    T2.CO_TIPO_DOCU = @OSTI_DOCU
                  	  AND    T2.NU_DOCU_PROV = @CSNU_LETR_PROV
			  AND    T1.CO_EMPR = T2.CO_EMPR  
                          AND    T1.NU_RENO = T2.NU_RENO
			  AND    T1.CO_PROV = T2.CO_PROV
		 	
   			  SELECT @VNIM_PAGA_TOTA = ISNULL(@VNIM_PAGA_CAJA, 0) + 
			   		     ISNULL(@VNIM_PAGA_CARG, 0) + 
                         		     ISNULL(@VNIM_PAGA_CHEQ, 0) +
				 	     ISNULL(@VNIM_PAGA_RENO, 0) 

	                  Select @VNIM_DETA = @CNIM_TOTA - @VNIM_PAGA_TOTA 
			
			  --SELECT  @CSNU_LETR_PROV,  @CNIM_TOTA , @VNIM_PAGA_TOTA 

                	  If @CNIM_TOTA > @VNIM_PAGA_TOTA

              		  Insert #TWREPO_PROV ( CO_EMPR, FE_EMIS, FE_VENC, CO_TIPO_DOCU, NU_DOCU_PROV, CO_PROV,
                                                      NO_CORT_PROV, DE_OBSE, CO_MONE, NU_ANTI, IM_DETA, CO_TIPO_OPER)
                            Values (@CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, @OSTI_DOCU, @CSNU_LETR_PROV, 
                                   @CSCO_PROV, @VSNO_CORT_PROV, NULL, @CSCO_MONE, @VNNU_ANTI, @VNIM_DETA, @CSCO_TIPO_OPER)
                          End
 
                  End
             End

           Fetch  CU_TMDOCU_PROV_Q01_1 INTO  @CSCO_EMPR, @CDFE_EMIS, @CDFE_VENC, 
           @CSNU_LETR_PROV,  @CSCO_PROV, @CNIM_TOTA, @CSCO_MONE,
	   @CSCO_MONE_DEFA, @CSCO_MONE_EXTR, @CSCO_TIPO_OPER

           Select @VNFE_0001 = @@FETCH_STATUS
       End

       Close CU_TMDOCU_PROV_Q01_1
       Deallocate CU_TMDOCU_PROV_Q01_1  
  End  
  
  Execute ('Select   T1.CO_EMPR, T2.DE_NOMB, T1.FE_EMIS, T1.FE_VENC, T1.CO_TIPO_DOCU, 
		     T1.NU_DOCU_PROV, T1.CO_PROV, T1.NO_CORT_PROV, T1.DE_OBSE, 
		     T1.CO_MONE, T1.NU_ANTI, 
		     Patindex("0", Convert(varchar(1),patindex (T1.CO_MONE, T3.CO_MONE_EXTR)))*IM_DETA, 
  		     Patindex(T1.CO_MONE, T3.CO_MONE_EXTR)*T1.IM_DETA, T1.CO_TIPO_OPER
  	     From    #TWREPO_PROV T1, TMEMPR T2, TMPARA_TESO T3 ' + @VSSE_ORDE ) 

RETURN


/*---------------- Fin ----------------------------*/


GO
